package com.yingda.electronicscaleadvices.utils;

import android.view.KeyEvent;

import java.util.ArrayList;
import java.util.List;

public class KeyCodeUtils {
    private KeyCodeUtils(){}

    /** 实例对象, 这里还没有添加volatile关键字 */
    private static KeyCodeUtils instance = null;


    /**
     * 获取对象: 将方法上的synchronized移至内部
     * @return instance 本类的实例
     */
    public static KeyCodeUtils getInstance() {
        // 先判断实例是否存在
        if (instance == null) {
            // 加锁创建实例
            synchronized (KeyCodeUtils.class) {
                // 再次判断, 因为可能出现某个线程拿了锁之后, 还没来得及执行初始化就释放了锁,
                // 而此时其他的线程拿到了锁又执行到此处 ==> 这些线程都会创建一个实例, 从而创建多个实例对象
                if (instance == null) {
                    instance = new KeyCodeUtils();
                    init();
                }
            }
        }
        return instance;
    }

    private static List<Integer> integers = new ArrayList<>();
    private static void init(){
        integers.add(KeyEvent.KEYCODE_0);
        integers.add(KeyEvent.KEYCODE_1);
        integers.add(KeyEvent.KEYCODE_2);
        integers.add(KeyEvent.KEYCODE_3);
        integers.add(KeyEvent.KEYCODE_4);
        integers.add(KeyEvent.KEYCODE_5);
        integers.add(KeyEvent.KEYCODE_6);
        integers.add(KeyEvent.KEYCODE_7);
        integers.add(KeyEvent.KEYCODE_8);
        integers.add(KeyEvent.KEYCODE_9);
        integers.add(KeyEvent.KEYCODE_NUMPAD_DOT);
    }


    //判断输入的是有效数字
    public boolean effectiveNumber(int code){
        if (integers.contains(code)){
            return true;
        }
        return false;

    }

}
